#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

int main(int argc ,char* const argv[])
{
    umask(0);
    int fd = open ("log.txt",O_CREAT|O_WRONLY|O_CREAT|O_TRUNC,0666);
    
    char arr[100];
    memset(arr,0,100);
    //int fd = open ("log.txt",O_CREAT|O_WRONLY|O_CREAT|O_TRUNC);
    if(fd<0)
    {
      perror("open");
      exit(-1);
    }
    if(argv[1]==NULL)
    {
      printf("加文件\n");
      exit(-1);
    }
    int fd1 = open(argv[1],O_RDONLY,0666);
   // while(read(fd1,arr,sizeof(arr)))
   // {
   //   write(fd,arr,strlen(arr));
   // }
   dup2(fd1,0);//这里fd1重定向到0，把fd1指向的内容拷贝到0，就两个fd1
    while(fgets(arr,sizeof(arr),stdin)!=NULL)//重定向是给语言层面封装的stdin，stdout重底层改变文件指针的指向，从而实现各种输出输入重定向
    {
      write(fd,arr,strlen(arr));
    }
    

    return 0;    
}
